import { createWebHashHistory, createRouter } from 'vue-router'
import { staticRouter, errorRouter } from '@/router/modules/static-router'
// import { projectRouter } from '@/router/modules/project-router'
import NProgress from '@/config/nprogress'
import { Session } from '@/utils/storage'
import { ROUTER_WHITE_LIST } from '@/config/config'

// 在这个页面定义路由 配置路由守卫
const router = createRouter({
  history: createWebHashHistory(),
  routes: [...staticRouter, ...errorRouter]
})
/**
 * @description 路由拦截 beforeEach
 * */
router.beforeEach(async (to, from, next) => {
  // // 1.NProgress 开始 --进度条,页面最上方的一条
  NProgress.start()
  // 获取token--
  const token = Session.get('token')
  // 动态设置标题
  document.title = to.meta.title ? `${to.meta.title}` : ''
  // 判断是否是访问登录页面，有token就在当前页面，没有token就重置路由并放行到登录页
  if (to.path === '/login') {
    if (token) return next(from.fullPath)
    return next()
  }
  // 判断访问页面是否存在在路由白名单中，如何存在就直接放行
  if (ROUTER_WHITE_LIST.includes(to.path)) return next()
  // 判断是否有token, 没有就重定向到login
  if (!token) return next({ path: '/login', replace: true })
  // 正常访问页面
  next()
})
/**
 * @description 路由跳转结束
 * */
router.afterEach(() => {
  NProgress.done()
})

/**
 * @description 路由跳转错误
 * */
router.onError(error => {
  NProgress.done()
  console.warn('路由错误', error.message)
})
export default router
